// 作者:于大明
// 职责：处理业务逻辑

let mixin = {
    // 负责程序中需要进行set的数据 就是页面交互需要改的数据 比如点击checkbox 需要设置true false 和存放ajax的输入输出 (尽量少去定义data里面的属性 多用computed或者filters或者组件进行处理) 
    // 1 能不能在页面单行代码实现
    // 2 能不能不用data methods去实现这个功能
    data() {
        return {

        };
    },
    // 负责和页面事件进行交互
    methods: {

    },
    // 不要set的数据 统一用computed实现(能用computed 实现的 尽量用他实现 不要用data和method处理) 有返回值的不需要传参的method用computed实现 
    computed: {
        // 查询条件变化用于监控 命名方式以 calc加data的接口in
        //calcGetStudentListIn() {
        //    return this._.cloneDeep(this.getStudentListIn);
        //},

        // 接口返回值处理 calc加data的接口out 命名规范：前缀加calc
        //calcGetStudentListOut() {
        //    let dataList = this._.cloneDeep(this.getStudentListOut.dataList);
        //    dataList.forEach((item, index) => {
        //        // 有初始化选中的Id 那么选中
        //        if (this.selctId == item.id) {
        //            this.$set(item, 'selected', true);
        //        } else {
        //            // 设置属性需要通过这种方式设置 如之前没有绑定这个属性 需要这种方式设置 不然没办法双向绑定  其他设置为false
        //            this.$set(item, 'selected', false);
        //        }
        //    });
        //    // 尽量用lodash链式语法进行数据处理
        //    const page = 1; // 第几页
        //    const limit = 5; // 每页多少条
        //    const dealList = this._(dataList).chain()
        //        .drop((page - 1) * limit) // 跳过前面数据
        //        .take(limit) // 取几个
        //        .filter(x => x.age <= 10) // 过滤
        //        .map(x => ({
        //            stuName: x.stuName,
        //            age: x.age
        //        })) // 映射数据
        //        .orderBy(['stuName', 'age'], ['desc', 'asc']) // 排序
        //        .uniqBy('stuName') // 去重
        //        .value();
        //    return dealList;
        //},
    },
    // 负责格式化数据 有返回值的需要传参的method 用filters实现
    filters: {
        // 多个参数filter 调用   {{day|weekDayFmt(getStudentListIn.month)}} filter  命名规范：filter后缀加上Fmt  vue3参考: http://knowledge.whcewei.com/CodeKnowledge/Detail-91D4B057-821A-4A0C-96E5-C0BC8CDDDC9C.aspx
        //weekDayFmt(day, yearMonth) {
        //    var weekDay = moment(yearMonth + "-" + day).day();
        //    var weekObj = { 1: "一", 2: "二", 3: "三", 4: "四", 5: "五", 6: "六", 0: "日" };
        //    return weekObj[weekDay];
        //},
    },
    // 负责数据变化后需要和接口交互
    watch: {
        // 监控查询条件的变化 自动请求数据
        //'calcGetStudentListIn': {
        //    handler(val, oldval) {
        //        if (this.$util.isChgForWatch(val, oldval, ['pageIndex', 'sarchValue'])) { // 监控对象中那些数据发生了变化
        //            this.getPageList();
        //        }
        //    },
        //    deep: true,
        //    immediate: true,
        //}
    }
}
export default mixin;